React Server Componentsをアーキテクチャとしてどう捉えるか
8割ぐらいドリームとポエム
関連
概要
RESTで困っていなければ無理して採用する必要はない こういうクラサバの跨ぎ方はアンチパターンと言われがち
境界は冗長で効率が悪いケースもある
どちらにも当てはまらない境界もある
主体をユーザーとしてみた時、境界は本当に必要なのだろうか?
本質的にフロントエンドのための処理はフロントエンドに寄せることで全体の凝集度やアジリティを高めることができる フロントエンドが実ユーザーのリッチな要求に答え続ける形で技術的に進化を重ねた結果、堅牢かつ効率的に境界をまたげるようになった
バックエンドへの影響
フロントエンドはRSC上でフェッチする
リソースの状態や更新手順
ドメイン知識やDBのテーブル構造が頭に入っていないと理解が難しい
後述
API実装にまつわる煩雑さはマシになるかもしれない
粒度やバージョニング
意図されない使われ方していたり、知らないところで再利用されることを防げるので影響度が狭めやすい
デザインやユースケースに実装都合に引きずられた仕様をフロントエンドの実装者へ遅らせる事ができる
分業について
チームの単位と問題領域が変わる
が、なんらかの形でDBへの知識をカプセル化するレイヤは必要になるはず 後述
バックエンドとフロントエンドを統合したフィーチャーチームであればコミュニケーションはしやすいはず 従来の開発サイクルの変化
自然とフロントエンドを中心に考えるようになるはず
3. フロントエンドはAPI定義されるまで動きづらく前提知識が欠けて指示待ちになりやすい
RSCの場合
2. クライアントとサーバをRSCで組み込む
フロントエンドに識者がいること前提
ある程度バックエンドの知識を持っているフロントエンドがスキーマ定義に入れるとクエリの柔軟性が生まれる 恣意的なフロントエンド/バックエンドという肩書きによる分業は効率が悪い コミュニケーションパスが増えると政治が発生する
同じ価値単位であれば一気通貫で実装できると理想的
一気通貫で実装するために
エンドユーザーにとっての価値を最速でもたらすことを念頭に考えると理想的なのかもしれない
構成
RSCでDBを直で読み書きするのが横行してカオス化するのは容易に想像できる
DBへの読み書きを吸収するレイヤとしてのtRPCはよいのでは 中大規模開発でRSCを採用するにはチーム構成やモジュール構成をよく練らないと数々の落とし穴にハマると思われる
構成やワークフローは若干複雑になるので興味本位で手を出すと痛い目を見るはず
デバッグ, モック, ロギング
エコシステムが追従してくるのに時間差が生まれそうな気はする
課題
構成(デバッグ, ロギング, モニタリング)
メモ
RSCとはまた世界が別か